The present invention relates to receivers of signals modulated by pseudorandom noise, such as the receivers used in navigation systems, and, more particularly, to a receiver based on a hierarchy of delay lock loops to maintain code lock.
Radio navigation systems are used for providing geographic location and time information. Examples of these systems include the United States' Global Positioning System (GPS) and the Russian Global Navigation System (GLONASS). These systems rely on satellites in orbit around the Earth. They allow the derivation of precise navigation information including three-dimensional position, velocity and time. Normally, reception of signals from at least four satellites is required for precise location determination on four dimensions (latitude, longitude, altitude and time). Once the receiver has measured the respective signal propagation delays, the range to each satellite is calculated by multiplying each delay by the speed of light. Then the location and time are found by solving a set of four equations that incorporate the measured ranges and the known locations of the satellites. The highly precise capabilities of the system are maintained by means of atomic clocks on board the satellites and by ground tracking stations which continuously monitor and correct satellite clock and orbit parameters.
In the GPS system, each satellite transmits two direct-sequence-coded spread spectrum signals: an L1 signal at a carrier frequency of 1.57542 GHz and an L2 signal at a carrier frequency of 1.2276 GHz. The L1 signal consists of two phase-shift keyed (PSK) spread-spectrum signals modulated in phase quadrature: the P-code signal ("P" stands for "precise") and the C/A-code signal (C/A stands for "Coarse/Acquisition"). The L2 signal contains only the P-code signal. The P and C/A codes are repetitive pseudorandom bit sequences which are modulated onto the carriers. These bits are called "chips" in spread spectrum parlance. The clocklike nature of these codes is used by the receiver in making time delay measurements. The codes of each satellite are unique, allowing the receiver to distinguish between signals, from the various satellites, that share a common carrier frequency. Also modulated onto each carrier is a 50 bit-per-second data stream which, for each satellite, contains information about system status and satellite orbit parameters which are needed for the navigation calculations. The P-code signals are encrypted, and are intended to be decrypted only by classified users. The C/A signals are available to all users.
The operations performed in a GPS receiver are for the most part typical of those performed in any direct-sequency spread spectrum receiver. The spreading effect of the pseudorandom code modulation must be removed from each signal by multiplying by a time-aligned, locally generated copy of its code, in a process known as despreading. Because the appropriate time alignment, or code phase, is not known at receiver startup, it must be sought during the initial acquisition stage. Once found, proper code time-alignment, also called "code lock", must be maintained during the tracking phase of receiver operation, as the satellites move relative to the user.
Once despread, each signal consists of a 50 bit-per-second PSK signal at some low frequency. This frequency is uncertain because of the Doppler shift caused by relative motion between the satellite and the user, and also because of receiver local clock error. During initial signal acquisition, the signal must be sought in a frequency range which allows for this uncertainty. Once the Doppler frequency offset is determined approximately, carrier demodulation can compensate for it by digital processing means.
Most of the functions described so far are performed by digital means. After high speed A/D conversion, despreading is performed using special hardware controlled by a microcontroller. The microcontroller also performs additional digital signal processing tasks, such as data detection, timing recovery and navigation.
One mechanism commonly used for maintaining code time-alignment is the so-called "delay-lock loop" (DLL). A DLL tracking system which correlates early, current and late versions of the locally generated pseudorandom noise code signal with the received composite signal typically is used to maintain code lock in each channel. This code lock must be maintained despite multipath propagation and despite sudden motion of the receiver.
The DLL, first introduced by Spilker (J. J. Spilker Jr., "GPS Structure and Performance Characteristics", Navigation Vol. 25 No. 2 pp. 121-146 (1978)), is based on correlating the incoming signal with two time-shifted versions of the pseudorandom noise code generated at the receiver, an early version and a late version. FIG. 1 shows the ideal normalized correlation function between the incoming signal and the pseudorandom noise code. In FIG. 1, the abscissa is the time lag between the incoming signal and the receiver's code generator, in units of T.sub.c, the code chip time. When the receiver's code generator is exactly synchronized with the incoming signal, the correlation function is almost unity. When the receiver's code generator leads or lags the incoming signal by more than T.sub.c, the correlation function is almost zero. (In the GPS C/A-code signal, for example, chip "epochs" are 1023 chips long, so the correlation function is -1/1023 at leads and lags greater than T.sub.c and 1 at perfect synchrony.) In between, the correlation function is linear. In most prior art receiver architectures, the early (E) and late (L) correlation timings differ initially by 2.DELTA.=T.sub.c as shown in FIG. 1. In particular, FIG. 1 shows the timing of the early correlation and the late correlation relative to the incoming signal when the current correlation, which is actually used to despread the incoming signal, and which is performed at a time exactly halfway between the early correlation and the late correlation, is exactly synchronized with the incoming signal, i.e., at time zero. At perfect synchrony, the difference between the early correlation and the late correlation is zero. When the current correlation leads or lags perfect synchrony, the difference between the early correlation and the late correlation is as shown by the curve labeled "k=1" in FIG. 2. This curve is produced by sliding the vertical lines labeled "E" and "L" in FIG. 1 leftward and rightward while maintaining the 2.DELTA.=T.sub.c spacing between the two lines, and is a plot of the difference between the length of the "E" line and the length of the "L" line as a function of the time half way between the two lines. For obvious reasons, this curve is called an "S-curve". It provides a measure of the timing mismatch between the incoming signal and the receiver's code generator.
FIG. 3 is a block diagram of a coherent delay lock loop tracking system 10 of the prior art. The arrows show the direction of data flow. Pseudorandom noise code is generated by a code generator 12. An incoming signal C(t) is multiplied by this code in a current multiplier 14, an early multiplier 16 and a late multiplier 18. The code input to early multiplier 16 is advanced by .DELTA. (block 24) relative to the code input to current multiplier 14. The code input to late multiplier 18 is delayed by .DELTA. (block 26) relative to the code input to current multiplier 14. The outputs of early multiplier 16, current multiplier 14 and late multiplier 18 are low pass filtered (blocks 20, 21 and 22, respectively). The outputs of low pass filters 20 and 22 are correlation signals that are subtracted (block 28) to produce the corresponding S-curve value. Thus, early multiplier 16 and low pass filter 20 together constitute an early correlator; similarly, late multiplier 18 and low pass filter 22 together constitute a late correlator. The S-curve value is a control signal which is transformed by a loop filter 30 to a control voltage that is proportional to the time shift that must be applied to the code generated by code generator 12 to achieve synchrony with the input signal C(t). This control voltage is applied to a VCO 32. The output of VCO 32 is a code phase signal that drives code generator 12. The portion of delay loop tracking system 10 that constitutes the DLL proper is bounded by dashed line 34.
Loop filter 30 and VCO 32 each are characterized by one or more state variables, with the code phase itself being one of the state variables of VCO 32. At any time, the output of loop filter 30 depends on both the input from subtraction block 28 and the instantaneous values of the state variables. The state variables themselves may be dynamic functions of time, and may be set and read externally. For example, there is a realization of loop filter 30 wherein one of the state variables is equal to the Doppler frequency shift. The facility of reading from and writing to loop filter 30 and VCO 32 is represented in FIG. 3 by a triple-headed double arrow 36.
Noncoherent DLLs also are known. A noncoherent DLL is identical to DLL 34, except that the absolute values of the outputs of low pass filters 20 and 22 are subtracted in block 28.
Using a spacing 2.DELTA. equal to T.sub.c to generate the S-curve is known to offer a good tradeoff between immunity to random noise on the one hand, and immunity to receiver motion, on the other. It can be shown that the variance of the code phase due to random noise is proportional to .DELTA.. The tradeoff is that a narrow spacing makes the system more susceptible to loss of lock because of sudden receiver motion. FIG. 2 shows S-curves for .DELTA. equal to 2.sup.-k (k=1, 2, 3, 4 and 5). The k=1, k=2 and k=3 curves are labeled as such. Note that all five S-curves are linear, with a slope of 2/T.sub.c, in their respective intervals [-.DELTA.,.DELTA.]. The increased susceptibility to loss of lock associated with k&gt;1 is caused by the flat portions of the corresponding S-curves. In many prior art receiver architectures, after the signal is acquired, 2.DELTA. is decreased below T.sub.c to reduce the tracking error caused by random noise, but this makes the system more vulnerable to loss of lock.
There is thus a widely recognized need for, and it would be highly advantageous to have, a system and method for maintaining code lock, in a receiver of signals modulated by pseudorandom noise, that combines the immunity to loss of lock due to receiver motion of a DLL having a wide correlation spacing with the immunity to random noise and multipath propagation of a DLL having a narrow correlation spacing.